/*
 * Created by LiuYou on 2020/12/7.
 *
 */

#include <iostream>


#define CALL_WITH_MAX(a, b) \
f((a) > (b) ? (a) : (b))


int f(int a) {
    return a;
}

template<typename T>
inline void callWithMax(const T& a, const T& b) {
    f(a > b ? a : b);
}

/*class GamePlayer {
private:
    enum class Value {
        NUM_TURNS = 5
    };
    int scores[static_cast<int>(Value::NUM_TURNS)];
};*/

enum class Value {
    NUM_TURNS = 5
};

class GamePlayer {
private:

    int scores[static_cast<int>(Value::NUM_TURNS)];
};

/**
 *
 * @return
 */
int main() {
    std::cout << "constant    enumeration    inline" << std::endl;
    std::cout << static_cast<int>(Value::NUM_TURNS) << std::endl;

    std::cout << CALL_WITH_MAX(2, 3) << std::endl;
    callWithMax(2, 3);
    return 0;
}